<?php

namespace Framework;
use PDO;

class Database{
    public $conn;
    /**
     * Database 类构造器
     * 
     * @param array $config
     */

     public function __construct($config) {
        $dsn = "mysql:host={$config['host']};port={$config['port']};dbname={$config['dbname']}";

        $options = [
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_DEFAULT_FETCH_MODE =>PDO::FETCH_OBJ
        ];

        try{
            $this->conn = new PDO($dsn,$config['username'],
            $config['password'],$options);
            // echo "连接成功";//测试完毕后删去
        }
        catch(PDOException $e){
            
            throw new Exception("数据库连接失败:{$e->getMessage()}");
        }
     }

     /**
      * 执行数据库请求

      * @param string $query 
      * @return PDOStatement
      * @throws PDOException
      */

      public function query($query,$params = []){
        try{
            $sth = $this->conn->prepare($query);
            foreach($params as $params=>$values){
                $sth->bindValue(':'.$params,$values);
            }
            $sth->execute();
            return $sth;
        }
        catch(PDOException $e){
            throw new Exception("数据库请求执行失败：{$e->getMessage()}");
        }
      }
}

?>